﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraBars;
using System.Data.SqlClient;
using QLKhachSan.DAO;
using QLKhachSan.DTO;
using QLKhachSan.BUS;
using DevExpress.XtraEditors;

namespace QLKhachSan.GUI
{
    public partial class fThuePhong : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        public fThuePhong()
        {
            InitializeComponent();
        }
        private fDanhSachPhong _fDanhSachPhong;
        public static DataTable dt = new DataTable();
        private int r;
        public static int maPhieuDen;
        private  fInBaoCao _fInBaoCao = new fInBaoCao();

        private void fThuePhong_Load(object sender, EventArgs e)
        {
            textBoxTenNV.Enabled = false;
            // Chi Tiet Phong thue
            textBoxTenP.Enabled = false;
            textBoxTenP.Text = fDanhSachPhong._TenP;

            if (dt.Rows.Count > 0)
            {
                dataGridViewP.DataSource = dt;
            }
            else
            {
                try
                {
                    dt.Columns.Add("Tên Phòng");
                    dt.Columns.Add("Ngày Trả Phòng Dự Kiến");
                }
                catch (Exception )
                { }

            }
            dataGridViewP.ReadOnly = true;
            simpleButtonThem.Enabled = true;

            if (fDanhSachPhong.coThue)
            {
                dateTimePickerNgayTra.MaxDate = fDanhSachPhong.ngayDen.Date;
                dateTimePickerNgayTra.MinDate = DateTime.Now;
            }
            else
            {
                dateTimePickerNgayTra.MinDate = DateTime.Now.AddDays(1);
            }
            
            // Thong Tin Khach Hang
            textBoxTenKH.ResetText();
            textBoxTenKH.Enabled = false;
            textBoxCMND.Enabled = false;
            textBoxQuocTich.Enabled = false;
            textBoxTien.Enabled = false;
            textBoxDiaChi.Enabled = false;
            textBoxSDT.Enabled = false;
            textBoxCMND.ResetText();
            textBoxQuocTich.Text = "Việt Nam";
            textBoxSDT.ResetText();
            textBoxTien.ResetText();
            textBoxDiaChi.ResetText();
            dateTimePickerNgayDatP.Enabled = false;
            radioButtonNam.Checked = true;
            DataTable dta_nv = DAO_NhanVien.hienthiDanhSachNhanVienTheoMaNV(int.Parse(fLogin.maNV));
            textBoxTenNV.Text = dta_nv.Rows[0]["TenNV"].ToString();
            simpleButtonLuu.Enabled = false;
            simpleButtonHuyTK.Enabled = false;
            
        }

        private void textBoxCMND_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void textBoxSDT_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void textBoxTien_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void simpleButtonThem_Click(object sender, EventArgs e)
        {
            if (_fDanhSachPhong == null || _fDanhSachPhong.IsDisposed) // Chua Tao or Chua Mo fDatPhong, Tạo Mới fDatPhong
            {
                this.Hide();
                _fDanhSachPhong = new fDanhSachPhong();
                _fDanhSachPhong.MdiParent = fMain.ActiveForm;
                _fDanhSachPhong.Show();
            }
            else
            {
                this.Hide();
                _fDanhSachPhong.Close();
                _fDanhSachPhong = new fDanhSachPhong();
                _fDanhSachPhong.MdiParent = fMain.ActiveForm;
                _fDanhSachPhong.Show();
            } 
        }

        private void simpleButtonOK_Click(object sender, EventArgs e)
        {

            if (textBoxTenP.Text != "")
            {

                if (dateTimePickerNgayTra.Value > DateTime.Now)
                {
                    int dem = 0;
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (dt.Rows[i][0].ToString() == textBoxTenP.Text.ToString())
                        {
                            dem++;
                            break;
                        }
                    }
                    if (dem == 0)
                    {
                        dt.Rows.Add(textBoxTenP.Text, dateTimePickerNgayTra.Text + "AM");
                        dataGridViewP.DataSource = dt;
                        textBoxTenP.ResetText();
                        textBoxTenKH.Focus();
                    }
                    else
                    {
                        MessageBox.Show("Phòng này đã có rồi!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        textBoxTenP.ResetText();
                    }
                }
                else
                {
                    MessageBox.Show("Ngày Trả Không Hợp Lệ (Phải lớn hơn Thời gian hiện tại)!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Chưa có thông tin Phòng!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }  
        }

        private void dataGridViewP_MouseClick(object sender, MouseEventArgs e)
        {
            try
            {
                r = dataGridViewP.CurrentCell.RowIndex;
                textBoxTenP.Text = dataGridViewP.Rows[r].Cells[0].Value.ToString();
                dateTimePickerNgayTra.Text = dataGridViewP.Rows[r].Cells[1].Value.ToString();
            }
            catch (Exception ) { }
        }        

        private void simpleButtonHuy_Click(object sender, EventArgs e)
        {
            if (textBoxTenP.Text != "" )
            {
                try
                {
                    dt.Rows.RemoveAt(r);
                    dataGridViewP.DataSource = dt;
                    MessageBox.Show("Hủy Thành Công", "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    textBoxTenP.ResetText();
                }
                catch
                    (Exception)
                { }
            }
            else
            {
                MessageBox.Show("Chưa chọn Phòng cần Hủy!!!???", "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);
               
            }
        }

        private void simpleButtonHuyD_Click(object sender, EventArgs e)
        {
            textBoxTenKH.ResetText();
            textBoxTenP.ResetText();
            textBoxCMND.ResetText();
            textBoxQuocTich.ResetText();
            textBoxSDT.ResetText();
            textBoxTien.ResetText();
            textBoxTien.ResetText();
            dt.Clear();
            this.Close();
        }

        private void simpleButtonLap_Click(object sender, EventArgs e)
        {
            if (dataGridViewP.Rows.Count > 1)
            {
            simpleButtonHuyTK.Enabled = true;
            simpleButtonLuu.Enabled = true;
            textBoxTenKH.ResetText();
            textBoxTenP.ResetText();
            textBoxCMND.ResetText();            
            textBoxSDT.ResetText();
            textBoxTien.ResetText();
            textBoxDiaChi.ResetText();
            simpleButtonThem.Enabled = false;
            simpleButtonLap.Enabled = false;
            simpleButtonHuyD.Enabled = false;
            textBoxTenKH.Enabled = true;
            textBoxCMND.Enabled = true;
            textBoxQuocTich.Enabled = true;
            textBoxTien.Enabled = true;
            textBoxDiaChi.Enabled = true                ;
            textBoxSDT.Enabled = true;
            }
            else
            {
                MessageBox.Show("Chưa có Phòng để lập Phiếu!!???", "Lỗi !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        }

        private void simpleButtonLuu_Click(object sender, EventArgs e)
        {
            if (dataGridViewP.Rows.Count > 1)
            {
                if (textBoxTenKH.Text.Trim() != "" && textBoxTien.Text.Trim() != "" && textBoxSDT.Text.Trim() != "" &&
                textBoxDiaChi.Text.Trim() != "" && textBoxQuocTich.Text.Trim() != "" && textBoxCMND.Text.Trim() != "")
                {
                   
                        if (MessageBox.Show("Bạn có Chắc chắn lập Phiếu đặt Phòng Trên???", "Note !", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            // Them Khach Hang
                            DTO_KhachHang dt_kh = new DTO_KhachHang();
                            dt_kh.TenKH = textBoxTenKH.Text.Trim();
                            dt_kh.CMND = textBoxCMND.Text.Trim();
                            if (radioButtonNam.Checked == true)
                            {
                                dt_kh.GioiTinh = "Nam";
                            }
                            else
                            {
                                dt_kh.GioiTinh = "Nữ";
                            }
                            dt_kh.SDT = textBoxSDT.Text.Trim();
                            dt_kh.QuocTich = textBoxQuocTich.Text.Trim();
                            dt_kh.DiaChi = textBoxDiaChi.Text.Trim();
                            dt_kh.DiaChiThue = "";
                            dt_kh.MaSoThue = "";
                            BUS_KhachHang.themKhachHang(dt_kh);

                            // Them Phieu Den
                            DTO_PhieuDatPhong dt_pdp = new DTO_PhieuDatPhong();
                            DTO_PhieuDen dto_pd = new DTO_PhieuDen();
                            DataTable kh = BUS_KhachHang.hienthiDanhSachKhachHang();
                            dto_pd.MaKH = int.Parse(kh.Rows[kh.Rows.Count - 1]["MaKH"].ToString());
                            dto_pd.MaNV = int.Parse(fLogin.maNV);
                            dto_pd.NgayThue = dateTimePickerNgayDatP.Value;
                            dto_pd.TienTraTruoc = int.Parse(textBoxTien.Text.Trim());
                            BUS_PhieuDen.themPhieuDen(dto_pd);

                            //Them CT Phieu Den
                            string _TenPhong = "";

                            DTO_CTPhieuDen dto_ctpd = new DTO_CTPhieuDen();
                            DataTable dta_pd = BUS_PhieuDen.hienthiDanhSachPhieuDen();
                            dto_ctpd.MaPhieuDen = int.Parse(dta_pd.Rows[dta_pd.Rows.Count - 1]["MaPhieuDen"].ToString());
                            maPhieuDen = int.Parse(dta_pd.Rows[dta_pd.Rows.Count - 1]["MaPhieuDen"].ToString());
                            DTO_Phong dt_p = new DTO_Phong();
                            for (int i = 0; i < (dataGridViewP.Rows.Count - 1 ); i++)
                            {
                                // Them CT Phieu    

                                dto_ctpd.TenPhong = dataGridViewP.Rows[i].Cells[0].Value.ToString();
                                dto_ctpd.NgayTra = DateTime.Parse( dataGridViewP.Rows[i].Cells[1].Value.ToString());
                                BUS_CTPhieuDen.themCTPhienDen(dto_ctpd);

                                _TenPhong += "  " +  dataGridViewP.Rows[i].Cells[0].Value.ToString()+ " ,";

                                // Sua Trang Thai Phong
                                dt_p.TenPhong = dt.Rows[i][0].ToString();
                                dt_p.MaTrangThai = 3;
                                BUS_Phong.suaPhongTheoTrangThai(dt_p);
                            }
                            MessageBox.Show("Đã Thuê phòng : " + _TenPhong + "Đóng Form và In "  , "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            simpleButtonHuyD_Click(sender, e);
                            this.Close();
                            _fInBaoCao.Close();
                            _fInBaoCao = new fInBaoCao();
                            _fInBaoCao.MdiParent = fMain.ActiveForm;
                            _fInBaoCao.Show();
                        }
                 
                }
                else
                {
                    MessageBox.Show("Chưa Thêm Thông tin Khách Hàng Đầy đủ!!???", "Lỗi !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

            }
            else
            {
                MessageBox.Show("Chưa có Phòng để lập Phiếu!!???", "Lỗi !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void simpleButtonHuyTK_Click(object sender, EventArgs e)
        {
            simpleButtonHuyTK.Enabled = false;
            simpleButtonLuu.Enabled = false;
            textBoxTenKH.ResetText();
            textBoxTenP.ResetText();
            textBoxCMND.ResetText();
            textBoxQuocTich.Text = "Việt Nam";
            textBoxSDT.ResetText();
            textBoxTien.ResetText();
            textBoxDiaChi.ResetText();
            simpleButtonThem.Enabled = true;
            simpleButtonLap.Enabled = true;
            simpleButtonHuyD.Enabled = true;
            textBoxTenKH.Enabled = false;
            textBoxCMND.Enabled = false;
            textBoxQuocTich.Enabled = false;
            textBoxTien.Enabled = false;
            textBoxDiaChi.Enabled = false;
            textBoxSDT.Enabled = false;
        }

        private void textBoxQuocTich_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            textBoxQuocTich.ResetText();
        }

        private void textBoxSDT_Leave(object sender, EventArgs e)
        {
            if (textBoxQuocTich.Text == "Việt Nam")
            {
                if (textBoxSDT.Text.Trim() != "")
                {
                    if (!(textBoxSDT.TextLength >= 10 && textBoxSDT.TextLength <= 11))
                    {
                        MessageBox.Show("Số SĐT di dộng chưa hợp lệ(Số đã nhập : " + textBoxSDT.TextLength.ToString() + " số) !!!??? (Số SĐT di động 10-11 số)", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        textBoxSDT.Focus();
                    }
                }

            }
        }

        private void textBoxCMND_Leave(object sender, EventArgs e)
        {
            if (textBoxQuocTich.Text == "Việt Nam")
            {
                if (textBoxCMND.Text.Trim() != "")
                {
                    if (textBoxCMND.TextLength != 9)
                    {
                        MessageBox.Show("Số CMND chưa hợp lệ (Số đã nhập : " + textBoxCMND.TextLength .ToString()+ " số) !!!??? (Số CMND 9 số)", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        textBoxCMND.Focus();
                    }
                }
            }
        }

        private void dateTimePickerNgayTra_ValueChanged(object sender, EventArgs e)
        {

        }
    }
}